﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>IsObject - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The IsObject function returns a non-zero number if the specified value is an object." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
</head>
<body>

<h1>IsObject</h1>

<p>如果指定的值是对象, 则返回非零数字.</p>

<pre class="Syntax">Boolean := <span class="func">IsObject</span>(Value)</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Value</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#values">Any</a></p>
    <p>要检查的值.</p>
  </dd>

</dl>

<h2 id="Return_Value">返回值</h2>
<p>类型: <a href="../Concepts.htm#boolean">整数(布尔值)</a></p>
<p>如果 <em>Value</em> 是一个对象, 函数返回 1(true), 否则, 返回 0(false).</p>

<h2 id="Remarks">备注</h2>
<p>任何不是原始值(数字或字符串) 的值都被认为是对象, 包括那些不是从 <a href="Object.htm">Object</a> 派生的值, 例如 COM 封装对象. 之所以有这种区别, 是因为对象与原始值相比有几个共同的特征:</p>
<ul>
  <li>每个对象都是动态分配和<a href="../Objects.htm#Reference_Counting">引用计数的</a>. 任意数量的变量, 属性或数组元素都可以引用同一个对象. 对于不可变值, 这种区别并不重要, 但对象可以具有可变属性.</li>
  <li>每个对象都有一个<a href="../Objects.htm#ObjPtr">唯一的地址</a>, 这也是一个与 <a href="https://learn.microsoft.com/windows/win32/api/oaidl/nn-oaidl-idispatch">IDispatch</a> 兼容的接口指针.</li>
  <li>只有在是同一对象时, 一个对象与另一个值比较才比较相等.</li>
  <li>对象不能隐式地转换为字符串或数字.</li>
</ul>

<h2 id="Related">相关</h2>
<p><a href="../Objects.htm">Objects</a></p>

<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a class="ex_number" href="#ExBasic"></a> 报告 "This is an object." 因为值是对象.</p>
<pre>obj := {key: "value"}

if IsObject(obj)
    MsgBox "This is an object."
else
    MsgBox "This is not an object."</pre>
</div>

</body>
</html>